#include <bits/stdc++.h>
using namespace std;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

// 生成随机数
int randint(int l, int r) {
    return uniform_int_distribution<int>(l, r)(rng);
}

// 生成符合题目要求的测试数据
void gen_testcase(int case_id, int N, vector<int> A = {}) {
    ofstream fout("testdata/" + to_string(case_id) + ".in");
    
    if (A.empty()) {
        A.resize(N);
        for (int i = 0; i < N; i++) {
            A[i] = randint(1, N);
        }
    }
    
    fout << N << "\n";
    for (int i = 0; i < N; i++) {
        fout << A[i];
        if (i != N - 1) fout << " ";
    }
    fout << "\n";
    fout.close();
}

int main() {
    system("mkdir -p testdata");
    
    // 样例1
    gen_testcase(1, 5, {3, 2, 5, 2, 2});
    
    // 样例2
    gen_testcase(2, 3, {1, 1, 1});
    
    // 小数据，有解
    vector<int> A3 = {1, 2, 1, 3};
    gen_testcase(3, 4, A3);
    
    // 小数据，无解
    vector<int> A4 = {1, 2, 3};
    gen_testcase(4, 3, A4);
    
    // 中等数据，大部分相同
    vector<int> A5(100);
    for (int i = 0; i < 90; i++) A5[i] = 1;
    for (int i = 90; i < 100; i++) A5[i] = randint(2, 100);
    gen_testcase(5, 100, A5);
    
    // 中等数据，较分散
    vector<int> A6(100);
    for (int i = 0; i < 100; i++) A6[i] = randint(1, 50);
    gen_testcase(6, 100, A6);
    
    // 大数据，密集重复
    vector<int> A7(10000);
    for (int i = 0; i < 10000; i++) A7[i] = randint(1, 100);
    gen_testcase(7, 10000, A7);
    
    // 大数据，稀疏重复
    vector<int> A8(10000);
    for (int i = 0; i < 10000; i++) A8[i] = randint(1, 5000);
    gen_testcase(8, 10000, A8);
    
    // 大数据，极端情况1（大量相同值）
    vector<int> A9(100000);
    for (int i = 0; i < 90000; i++) A9[i] = 1;
    for (int i = 90000; i < 100000; i++) A9[i] = randint(2, 1000);
    gen_testcase(9, 100000, A9);
    
    // 大数据，极端情况2（基本不重复）
    vector<int> A10(100000);
    for (int i = 0; i < 100000; i++) A10[i] = i+1;
    gen_testcase(10, 100000, A10);
    
    // 大数据，随机
    vector<int> A11(200000);
    for (int i = 0; i < 200000; i++) A11[i] = randint(1, 100000);
    gen_testcase(11, 200000, A11);
    
    // 特殊情况：只有两种值
    vector<int> A12(50000);
    for (int i = 0; i < 25000; i++) A12[i] = 1;
    for (int i = 25000; i < 50000; i++) A12[i] = 2;
    gen_testcase(12, 50000, A12);
    
    // 特殊情况：所有值都相同
    vector<int> A13(100000, 5);
    gen_testcase(13, 100000, A13);
    
    // 特殊情况：所有值都不同
    vector<int> A14(100000);
    for (int i = 0; i < 100000; i++) A14[i] = i + 1;
    gen_testcase(14, 100000, A14);
    
    // 随机中等数据
    gen_testcase(15, 50000);
    
    // 随机大数据
    gen_testcase(16, 200000);
    
    system("g++ -O2 std.cpp -o std");
    for (int i = 1; i <= 16; i++) {
        string in = "testdata/" + to_string(i) + ".in";
        string out = "testdata/" + to_string(i) + ".out";
        string cmd = "./std < " + in + " > " + out;
        system(cmd.c_str());
        cerr << "生成测试数据 " << i << "/16 完成" << endl;
    }
    system("rm std");
    
    return 0;
}